package com.qifei.xmlg_backend.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Utils {

    // 加密的盐
    private static final String md5halt = "qifei123";

    /**
     * 生成字符串的 MD5 哈希值（32位小写）
     *
     * @param input 原始字符串
     * @return MD5 值（小写）
     */
    public static String encrypt(String input) {
        String enc = input + md5halt;
        if (input == null || input.isEmpty()) {
            throw new IllegalArgumentException("要加密的字符串不能为空");
        }
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digest = md.digest(enc.getBytes());
            return bytesToHex(digest).toLowerCase();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5算法不存在", e);
        }
    }

    /**
     * 将字节数组转16进制字符串
     */
    private static String bytesToHex(byte[] bytes) {
        StringBuilder hexStr = new StringBuilder();
        for (byte b : bytes) {
            String hex = Integer.toHexString(b & 0xff);
            if (hex.length() == 1) {
                hexStr.append('0'); // 补零
            }
            hexStr.append(hex);
        }
        return hexStr.toString();
    }
}
